/*
 * Propiedad de Fernando Lorenta
 * Ejercicios Java PCarrier
 */

package cargarTablaEjerBoletin;

import java.awt.Dimension;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.ListSelectionModel;
import ventanaInsertModBorrarEjerBoletin.VentanaInsertModBorrarEjerBoletin;
import ventanaPrincipal.VentanaPrincipal;
import ventanaPrincipal.VentanaPrincipalWindow;

/**
 *
 * @author fernan
 */
public class CargarTablaEjerBoletinWindow implements Runnable{
    
    private VentanaPrincipal ventanaPrincipal = null;
    private VentanaPrincipalWindow ventanaPrincipalWindow = null;
    private JTable tabla;
    private ModeloTabla modeloTabla;
    private int objCargar, boletinCargar;
    private Dimension tablaDimension;
    private JTextArea descripcionJTA;
    private String [] cabeceras;
    private CargarTablaEjerBoletin cargarTablaEjerBoletin;
    private ListSelectionModel cellSelectionModel;
    private VentanaInsertModBorrarEjerBoletin ventanaInsertModBorrarEjerBoletinWindow = null;
    
    public CargarTablaEjerBoletinWindow() {
    }//public CargarTablaEjerBoletinWindow()
    
    //Constructor para cuando llamo desde la VentanaPrincipalWindow
    public CargarTablaEjerBoletinWindow(VentanaPrincipalWindow ventanaPrincipalWindow, VentanaPrincipal ventanaPrincipal, int objCargar) {
        
        this.ventanaPrincipalWindow = ventanaPrincipalWindow;
        this.ventanaPrincipal = ventanaPrincipal;
        this.objCargar = objCargar;
        
        tablaDimension = ventanaPrincipalWindow.getScrollTablaEjercicios().getPreferredSize();
    }//public CargarTablaEjerBoletinWindow(VentanaPrincipalWindow ventanaPrincipalWindow, VentanaPrincipal ventanaPrincipal, int objCargar)
    
    //Constructor para cuando llamo desde VentanaInsertModBorrarEjerBoletin
    public CargarTablaEjerBoletinWindow(VentanaPrincipalWindow ventanaPrincipalWindow, VentanaPrincipal ventanaPrincipal, VentanaInsertModBorrarEjerBoletin ventanaInsertModBorrarEjerBoletinWindow, int objCargar) {
        
        this.ventanaPrincipalWindow = ventanaPrincipalWindow;
        this.ventanaPrincipal = ventanaPrincipal;
        this.ventanaInsertModBorrarEjerBoletinWindow = ventanaInsertModBorrarEjerBoletinWindow;
        this.objCargar = objCargar;
        
        tablaDimension = ventanaInsertModBorrarEjerBoletinWindow.getScrollTabla().getPreferredSize();
    }//public CargarTablaEjerBoletinWindow(VentanaPrincipalWindow ventanaPrincipalWindow, VentanaPrincipal ventanaPrincipal, int objCargar)

    @Override
    public void run() {
        
        modeloTabla = new ModeloTabla();
        
        //Si objCargar vale uno se cargará la tabla Boletines para modificar....
        if (objCargar == 1) {
            
        }
        else {
            
            //Si exite ventanaPrincipalWindow es que estoy llamando desde la ventanaPrincipalWindow con lo que cojo la tabla
            //de ventanaPrincipalWindow
            if (ventanaInsertModBorrarEjerBoletinWindow == null) {
                tabla = ventanaPrincipalWindow.getTablaEjercicios();
            }
            
            else {
                tabla = ventanaInsertModBorrarEjerBoletinWindow.getTabla();
            }
            
            //Cargo las cabeceras de la tabla Ejercicios
            cabeceras = new String[]{"Código", "Clase", "Nombre", "Boletín", "Descripción"};
            
            tabla.setModel(modeloTabla);
           
            modeloTabla.setColumnIdentifiers(cabeceras);
            
            //Con las tres líneas siguientes oculto la columna paquete-clase
            tabla.getColumnModel().getColumn(1).setMaxWidth(0);
            tabla.getColumnModel().getColumn(1).setMinWidth(0);
            tabla.getColumnModel().getColumn(1).setPreferredWidth(0);

            //Con las tres líneas siguientes oculto la columna descripción
            tabla.getColumnModel().getColumn(4).setMaxWidth(0);
            tabla.getColumnModel().getColumn(4).setMinWidth(0);
            tabla.getColumnModel().getColumn(4).setPreferredWidth(0);

            //Con las tres líneas siguientes oculto la columna boletín
            tabla.getColumnModel().getColumn(3).setMaxWidth(0);
            tabla.getColumnModel().getColumn(3).setMinWidth(0);
            tabla.getColumnModel().getColumn(3).setPreferredWidth(0);
            
        }
        
        //boletinCargar = Integer.parseInt((ventanaPrincipalWindow.getBoletinJCBX().getSelectedItem().toString()).substring(0, 3));
        
        //if (ventanaInsertModBorrarEjerBoletinWindow == null) {
            cargarTablaEjerBoletin = new CargarTablaEjerBoletin(ventanaPrincipalWindow, ventanaPrincipal, this);
        /*}
        
        else {
            cargarTablaEjerBoletin = new CargarTablaEjerBoletin(ventanaPrincipalWindow, ventanaPrincipal, this);
        }*/

        //Evito que se puedan mover las columnas
        tabla.getTableHeader().setReorderingAllowed(false);
        //Evito que se puedan redimensionar las columnas
        tabla.getTableHeader().setResizingAllowed(false);

        //Asigno el 15% del tamaño del scroll a la columna de código
        tabla.getColumnModel().getColumn(0).setMaxWidth(Math.round(tablaDimension.width * 0.15f));
        tabla.getColumnModel().getColumn(0).setMinWidth(Math.round(tablaDimension.width * 0.15f));
        tabla.getColumnModel().getColumn(0).setPreferredWidth(Math.round(tablaDimension.width * 0.15f));

        //Asigno las propiedades de la tabla 
        cellSelectionModel = tabla.getSelectionModel();
        cellSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        cellSelectionModel.addListSelectionListener(cargarTablaEjerBoletin);        
    }

    public String[] getCabeceras() {
        return cabeceras;
    }//public String[] getCabeceras() 

    public ModeloTabla getModeloTabla() {
        return modeloTabla;
    }//public ModeloTabla getModeloTabla()    

    public ListSelectionModel getCellSelectionModel() {
        return cellSelectionModel;
    }//public ListSelectionModel getCellSelectionModel()
    
}
